#include "include/LecteurSymbole.h"
#include "include/Symbole.h"
#include "include/LecteurPhraseSimple.h"
#include "include/LecteurPhraseAvecTable.h"
#include "include/LecteurPhraseAvecArbre.h"
#include <string>
#include <stdlib.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    /*
    if (argc != 2) {
        cout << "Usage : " << argv[0] << " nom_fichier_source" << endl << endl ;
        cout << "Entrez le nom du fichier dont voulez-vous lire les symboles : ";
        getline(cin,nomFich);
    }

    else nomFich=argv[1];
    */
    string nomFich = "programme02.txt";
    int menu;
    /*
    cout << "nom fichier : ";
    cin >> nomFich;*/
    cout << "1. lecteur symbole\n2. lecteur phrase simple\n3. lecteur phrase avec table\n4. lecteur phrase avec arbre" << endl;
    cin >> menu;
    if(menu == 1)
    {
        LecteurSymbole ls(nomFich);
        while(ls.getSymCour() != "<FINDEFICHIER>")
        {
            cout << "J'ai lu : " << ls.getSymCour() << endl;
            ls.suivant();
        }
        cout << "J'ai lu : " << ls.getSymCour() << endl;
    }
    else if(menu == 2)
    {
        LecteurPhraseSimple lp(nomFich);
        lp.analyse();
    }
    else if(menu == 3)
    {
        LecteurPhraseAvecTable lt(nomFich);
        lt.analyse();
        cout << lt.getTs();
    }
    else
    {
        LecteurPhraseAvecArbre lpa(nomFich);
        lpa.analyse();
        cout << endl << "Arbre Abstrait : " << endl;
        cout         << "================"  << endl;
        lpa.getArbre()->afficher();
        cout << endl << "Table des symboles avant evaluation : " << lpa.getTs();
        cout << endl << "Evaluation de l'arbre (interpretation)..." << endl;
        lpa.getArbre()->getValeur();
        cout << endl << "Table des symboles apres evaluation : " << lpa.getTs();
    }
    return EXIT_SUCCESS;
}
